Bereik en zichtbaarheid

   

Bereik verwijst naar de beschikbaarheid van een variabele, constante of procedure voor een andere procedure. Visual Basic kent drie niveaus voor bereik: het procedureniveau, private (persoonlijke) moduleniveau en public (openbare) moduleniveau.

U bepaalt het bereik van een variabele bij de declaratie. Het is verstandig om alle variabelen expliciet te declareren, zodat u naamconflicten tussen variabelen met verschillende bereiken voorkomt.

Bereik op procedureniveau definiδren

Een variabele of constante die binnen een procedure is gedefinieerd, is buiten die procedure niet zichtbaar. Deze variabele of constante kan alleen in de procedure met de declaratie van de variabele worden gebruikt. In het volgende voorbeeld geeft de eerste procedure een berichtvenster met een tekenreeks weer. De tweede procedure geeft een leeg berichtvenster weer, omdat de variabele strMsg een lokale variabele is voor de eerste procedure.

Sub LocalVariable()
    Dim strMsg As String
    strMsg = "Deze variabele kan niet buiten deze procedure worden gebruikt."
    MsgBox strMsg
End Sub

Sub OutsideScope()
    MsgBox strMsg
End Sub

Bereik op private moduleniveau definiδren

U kunt variabelen en constanten op moduleniveau definiδren in de sectie Declaraties van een module. Variabelen op moduleniveau kunnen zowel public als private zijn. Variabelen public kunnen in alle procedures in alle modules van een project worden gebruikt; Variabelen private kunnen alleen in procedures in de desbetreffende module worden gebruikt. Variabelen die met de instructie Dim in de sectie Declaraties zijn gedefinieerd, hebben een private bereik. Als u echter v≤≤r de variabele het sleutelwoord Private opneemt, maakt u het bereik duidelijk zichtbaar in de programmacode.

In het volgende voorbeeld is de tekenreeksvariabele strMsg beschikbaar voor alle procedures die in de module zijn gedefinieerd. Als de tweede procedure wordt opgeroepen, verschijnt de inhoud van de tekenreeksvariabele strMsg in een dialoogvenster.

' Voeg het volgende toe aan de sectie Declaraties van de module.
Private strMsg sAs String

Sub InitializePrivateVariable()
    strMsg = "Deze variabele kan niet buiten deze module worden gebruikt."
End Sub

Sub UsePrivateVariable()
    MsgBox strMsg
End Sub

Opmerking Procedures public in een standaardmodule of klassenmodule kunnen in elk verwijzend project worden gebruikt. Om het bereik van de procedures in een module tot het huidige project te beperken, voegt u een instructie Option Private Module aan de sectie Declaraties van het module toe. Variabelen public en procedures public kunnen dan nog wel in andere procedures binnen het huidige project worden gebruikt, maar niet meer in verwijzende projecten.

Bereik op public moduleniveau definiδren

Als u een variabele op public moduleniveau declareert, kan deze variabele in alle procedures in het project worden gebruikt. In het volgende voorbeeld kan de tekenreeksvariabele strMsg in elke procedure in elke module in het project worden gebruikt.

' Neem op in sectie Declaraties van de module.
Public strMsg As String

Gebeurtenisprocedures zijn de enige procedures die niet standaard public zijn. Als Visual Basic een gebeurtenisprocedure maakt, wordt automatisch het sleutelwoord Private voor de declaratie van de procedure geplaatst. In alle andere procedures moet u de procedure expliciet met het sleutelwoord Private declareren, als u niet wilt dat deze public is.

U kunt gebruik maken van procedures, variabelen en constanten public die in verwijzende projecten in standaardmodules of klassenmodules zijn gedefinieerd. U moet echter eerst een verwijzing opnemen naar het project waarin deze zijn gedefinieerd.

Procedures, variabelen en constanten public die niet in standaardmodules of klassenmodules zijn gedefinieerd, maar bijvoorbeeld in formuliermodules of rapportmodules, kunnen niet in verwijzende projecten worden gebruikt, omdat deze private zijn voor het project waarin ze zich bevinden.